/**
 * @作者 钟先崟
 * @时间 2023-02-14 19:18
 * @说明 1827. 最少操作使数组递增
 * 给你一个整数数组 nums （下标从 0 开始）。每一次操作中，你可以选择数组中一个元素，并将它增加 1 。
 * 比方说，如果 nums = [1,2,3] ，你可以选择增加 nums[1] 得到 nums = [1,3,3] 。
 * 请你返回使 nums 严格递增 的 最少 操作次数。
 * 我们称数组 nums 是 严格递增的 ，当它满足对于所有的 0 <= i < nums.length - 1 都有 nums[i] < nums[i+1] 。一个长度为 1 的数组是严格递增的一种特殊情况。
 */
public class Solution {
    public static void main(String[] args) {
        int[] nums = new int[]{1, 1, 1};
        System.out.println(minOperations(nums));
    }

    /**
     * 执行用时：
     * 2 ms
     * , 在所有 Java 提交中击败了
     * 85.37%
     * 的用户
     * 内存消耗：
     * 41.8 MB
     * , 在所有 Java 提交中击败了
     * 61.69%
     * 的用户
     * @param nums
     * @return
     */
    public static int minOperations(int[] nums) {
            int num = 0;
            for (int i = 0; i < nums.length - 1; i++) {
                if (nums[i] >= nums[i + 1]) {
                    num += nums[i] - nums[i + 1] + 1;
                    nums[i + 1] += nums[i] - nums[i + 1] + 1;
                }
            }
            return num;
    }
}
